package packageController;

import java.io.IOException;
import java.util.ArrayList;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import packageBusiness.CategorieManager;
import packageException.CategorieException;
import packageException.DataException;
import packageModel.Categorie;

/**
 *
 * @author Lionel & Julien
 */




/*
 * @TODO Il serait également intéressant de récupérer la langue de l'utilisateur et de lui afficher les informations correspondant aux syllabus dans sa langue. Cependant, il faudrait adapter la base de données afin de pouvoir implémenter cette fonctionalité !
 */
public class HomeSyllatheque extends HttpServlet {

    /** 
     * Processes requests for both HTTP <code>GET</code> and <code>POST</code> methods.
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {        
        try {
            response.setContentType("text/html;charset=UTF-8");
        
            // ---------------------------
            // Création de la liste des catégories (encodées dans la base de données)
            ArrayList<Categorie> categorie = null;
            CategorieManager cat = new CategorieManager();

            // On créé notre liste
            categorie = cat.Categorie();
            
            // ---------------------------
            // Création des variables pour la vue
            request.setAttribute("categorie", categorie);
        } catch(CategorieException e1) {
            // Erreur
            request.setAttribute("error", e1.toString());
            RequestDispatcher rd = request.getRequestDispatcher("erreur.jsp");
            rd.forward(request, response);
        } catch(DataException e2) {
            // Erreur
            request.setAttribute("error", e2.toString());
            RequestDispatcher rd = request.getRequestDispatcher("erreur.jsp");
            rd.forward(request, response);
        }
    }

    // <editor-fold defaultstate="collapsed" desc="HttpServlet methods. Click on the + sign on the left to edit the code.">
    /** 
     * Handles the HTTP <code>GET</code> method.
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        processRequest(request, response);
    }

    /** 
     * Handles the HTTP <code>POST</code> method.
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        processRequest(request, response);
    }

    /** 
     * Returns a short description of the servlet.
     * @return a String containing servlet description
     */
    @Override
    public String getServletInfo() {
        return "Short description";
    }// </editor-fold>
}
